c语言问题```在线等待``谢谢

来源:百度知道 编辑:UC知道 时间:2024/06/25 10:19:53
#include <stdio.h>
main()
{int s[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;
for(i=0;i<12;i++)c[s[i]]++;
for(i=1;i<5;i++)printf("%d",c[i]);
}

我在第一个for循环卡住了````c[s[i]],i=0的时候变成c[1]对吗?``如果没错,在一开始初始化的时候c[1]是没有值``C[2,3,4]也是没有值``那为什么答案是4332```请讲解下我哪里错了`或者哪里忽略了````谢谢

c[5]的所有元素初始都是0;
s[12]里有4个1,所以c[1]++被执行4次,因此是4;
s[12]里有3个2,所以c[2]++被执行3次,因此是3;
s[12]里有3个3,所以c[3]++被执行3次,因此是3;
s[12]里有2个4,所以c[4]++被执行2次,因此是2;

所以是4332,你希望是什么?

c[s[i]],i=0的时候变成c[1] 对!
你的s数组里有4个1,3个2,3个3,2个4啊,应该是4332啊!
哪里有问题啊?

你不是都给他们赋值了嘛,怎么会没值了,都是0呀!

数组中其它的元素也是0,不完全初始化的时候,整型数组默认初始化成0的啊

c[5]={0}定义的同时也是对整个数组赋了值,即0,随后就是自增的问题了